#ifndef __LRUCache_H__
#define __LRUCache_H__

#include <nlohmann/json.hpp>
#include <list>
#include <unordered_map>
#include <iterator>
#include <string>

#define CACHE_CAPACITY 1000

using json = nlohmann::json;
using std::list;
using std::unordered_map;
using std::pair;
using std::string;

class LRUCache
{
public:
    void readFromFile(const string& filename);                    //恢复缓存
    void addRecord(string key,json js);                     //添加一条记录
    void update(const LRUCache& lru);                       // 
    void writeToFile(const string& filename);                     //类似redis持久化
    json doQuery(const string& key);
    
    //测试
    void print_cache();
private:
    list<pair<string,json>> _resultList;                    //缓存中存放key及其推荐的结果集
    unordered_map<string,list<pair<string,json>>::iterator> _hashmap;                //用于快速定位key在list中的位置
    list<pair<string,json>> _pendingUpdateList;             //用来干嘛
    
};




#endif
